Shows how to update WPF controls with dynamic OPC-UA data.
// ReSharper disable PossibleNullReferenceException // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. using System.Windows; using System.Windows.Controls; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.OperationModel; namespace UAWpfScreen { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow/* : Window*/ { public MainWindow() { InitializeComponent(); } private void ClientOnDataChangeNotification(object sender, EasyUADataChangeNotificationEventArgs eventArgs) { // We have passed in a reference to the target TextBox as the State property in EasyUAMonitoredItemArguments. var textBox = (TextBox) eventArgs.Arguments.State; if (eventArgs.Succeeded) textBox.Text = eventArgs.AttributeData.DisplayValue(); else textBox.Text = "*** Error: " + eventArgs.Exception; } private void Window_Loaded(object sender, RoutedEventArgs e) { // Define the target controls, the OPC data we want to monitor, and how fast. var arguments = new [] { new EasyUAMonitoredItemArguments(TextBox1, "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer", "nsu=http://test.org/UA/Data/ ;i=10845", 1000), new EasyUAMonitoredItemArguments(TextBox2, "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer", "nsu=http://test.org/UA/Data/ ;i=10853", 1000), new EasyUAMonitoredItemArguments(TextBox3, "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer", "nsu=http://test.org/UA/Data/ ;i=10855", 1000) // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) // or "https://opcua.demo-this.com:51212/UA/SampleServer/" }; // Hook the event handler, and subscribe to OPC data _client.DataChangeNotification += ClientOnDataChangeNotification; _handles = _client.SubscribeMultipleMonitoredItems(arguments); } private void Window_Unloaded(object sender, RoutedEventArgs e) { // Unsubscribe from OPC data, and unhook the event handler _client.UnsubscribeMultipleMonitoredItems(_handles); _client.DataChangeNotification -= ClientOnDataChangeNotification; } private readonly EasyUAClient _client = new EasyUAClient(); private int[] _handles; } }
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Documentation Home, Send Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.